package com.wn.config;

import com.rabbitmq.client.AMQP;
import org.springframework.amqp.core.*;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author yellow Docter
 * @date 2023 -07-27
 * @desc
 */
@Configuration
public class RabbitMQConfig {

    // 把 队列、交换机、路由绑定 都在 生产者端 Java代码写

    // 队列    创建一个队列 添加到ioc容器中

    /**
     *  @Bean  注解用在方法上面
     *         把方法的返回值 添加到ioc容器中、在ioc容器的id 默认是方法的名称 、可以通过value进行设置
     */
    @Bean(value = "queue")
    public Queue queue(){
        //  QueueBuilder 队列构建者    durable  队列的持久化
        return QueueBuilder.durable("work").build();
    }

    //交换机
    @Bean(value = "exchange")
    public Exchange exchange(){
        return ExchangeBuilder.directExchange("exchange-demo").build();
    }

    //绑定
    @Bean
    public Binding binding(
            @Qualifier("exchange") Exchange exchange,
            @Qualifier("queue") Queue queue){
        //BindingBuilder  绑定构建者
        //bind(queue)     绑定 队列
        //to(exchange)    队列  和 那个交换机进行绑定
        //with("xxx")     路由绑定
        return BindingBuilder.bind(queue).to(exchange).with("offer").noargs();
    }

}
